package com.kexio.security.domain.enums;

/**
 * 设备类型枚举
 * 
 * @author Kexio Team
 * @since 1.0.0
 */
public enum DeviceType {
    /**
     * 网页端
     */
    WEB("web", "网页端"),
    
    /**
     * 移动应用
     */
    MOBILE("mobile", "移动应用"),
    
    /**
     * 桌面应用
     */
    DESKTOP("desktop", "桌面应用"),
    
    /**
     * 平板
     */
    TABLET("tablet", "平板"),
    
    /**
     * 其他
     */
    OTHER("other", "其他");

    private final String code;
    private final String description;

    DeviceType(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据编码获取设备类型
     * @param code 设备编码
     * @return 设备类型枚举
     */
    public static DeviceType fromCode(String code) {
        if (code == null) {
            return null;
        }
        for (DeviceType type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return OTHER;
    }

    /**
     * 检查是否为移动设备
     * @return 是否移动设备
     */
    public boolean isMobile() {
        return this == MOBILE || this == TABLET;
    }

    /**
     * 检查是否为桌面设备
     * @return 是否桌面设备
     */
    public boolean isDesktop() {
        return this == WEB || this == DESKTOP;
    }
}